﻿//Created by Action Script Viewer - http://www.buraks.com/asv
package ZLocalization {
    import flash.utils.*;

    public class Utilities {

        public static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
            var _local4:Number = Math.max(_arg1, _arg2);
            _local4 = Math.min(_local4, _arg3);
            return (_local4);
        }
        public static function formatNumber(_arg1:int):String{
            var _local4:Number;
            var _local2:String = _arg1.toString();
            var _local3:Array = new Array();
            var _local5:Number = _local2.length;
            while (_local5 > 0) {
                _local4 = Math.max((_local5 - 3), 0);
                _local3.unshift(_local2.slice(_local4, _local5));
                _local5 = _local4;
            };
            var _local6:String = _local3.join(",");
            return (_local6);
        }
        public static function parseLocalizationString(_arg1:String):Object{
            var _local2:Array = _arg1.split(":");
            var _local3:Object = new Object();
            _local3.filename = _local2[0];
            _local3.stringname = _local2[1];
            return (_local3);
        }
        public static function dateToNumber(_arg1:String, _arg2:Boolean=false):Number{
            var _local4:Array;
            var _local3:Number = 0;
            if (_arg2){
                _local4 = String(_arg1).split("/", 3);
                _local3 = Date.UTC(parseInt(_local4[2]), (parseInt(_local4[0]) - 1), parseInt(_local4[1]));
            } else {
                _local3 = new Date(_arg1).valueOf();
            };
            return (_local3);
        }
        public static function xmlListToArray(_arg1:XMLList, _arg2:String=""):Array{
            var _local4:XML;
            var _local3:Array = new Array();
            if (_arg2 == ""){
                for each (_local4 in _arg1) {
                    _local3.push(_local4);
                };
            } else {
                for each (_local4 in _arg1) {
                    _local3.push(String(_local4.attribute(_arg2)));
                };
            };
            return (_local3);
        }
        public static function uncompress(_arg1:ByteArray):String{
            var compressedData:* = _arg1;
            var compressedLength:* = compressedData.length;
            try {
                compressedData.uncompress();
            } catch(e:Error) {
                throw (e);
            };
            trace(((("Loaded compressed localization file. Originally: " + compressedLength) + "Decompressed: ") + compressedData.length));
            return (compressedData.toString());
        }
        public static function printr(_arg1, _arg2:int=0, _arg3:String=""){
            var _local6:*;
            var _local7:String;
            if (_arg2 == 0){
                _arg3 = (("(" + Utilities.typeOf(_arg1)) + ") {\n");
            } else {
                if (_arg2 == 10){
                    return (_arg3);
                };
            };
            var _local4 = "\t";
            var _local5:int;
            while (_local5 < _arg2) {
                _local5++;
                _local4 = (_local4 + "\t");
            };
            for (_local6 in _arg1) {
                _arg3 = (_arg3 + (((((_local4 + "[") + _local6) + "] => (") + Utilities.typeOf(_arg1[_local6])) + ") "));
                if (Utilities.count(_arg1[_local6]) == 0){
                    _arg3 = (_arg3 + _arg1[_local6]);
                };
                _local7 = "";
                if (typeof(_arg1[_local6]) != "xml"){
                    _local7 = Utilities.printr(_arg1[_local6], (_arg2 + 1));
                };
                if (_local7 != ""){
                    _arg3 = (_arg3 + ((("{\n" + _local7) + _local4) + "}"));
                };
                _arg3 = (_arg3 + "\n");
            };
            if (_arg2 == 0){
                trace((_arg3 + "}\n"));
            } else {
                return (_arg3);
            };
        }
        public static function typeOf(_arg1):String{
            if ((_arg1 is Array)){
                return ("array");
            };
            if ((_arg1 is Date)){
                return ("date");
            };
            return (typeof(_arg1));
        }
        public static function count(_arg1:Object):uint{
            var _local2:uint;
            var _local3:*;
            if (Utilities.typeOf(_arg1) == "array"){
                return (_arg1.length);
            };
            _local2 = 0;
            for (_local3 in _arg1) {
                if (_local3 != "mx_internal_uid"){
                    _local2++;
                };
            };
            return (_local2);
        }
        public static function trim(_arg1:String):String{
            return (_arg1.replace(/^(\s| )+|(\s| )+$/g, ""));
        }
        public static function arrayRand(_arg1:Array):Object{
            return (_arg1[Math.floor((Math.random() * _arg1.length))]);
        }
        public static function arrayDiff(_arg1:Array, _arg2:Array):Array{
            var _local3:int;
            var _local6:Object;
            var _local4:Array = new Array();
            var _local5:Dictionary = new Dictionary();
            _local3 = 0;
            while (_local3 < _arg1.length) {
                _local5[_arg1[_local3]] = true;
                _local3++;
            };
            _local3 = 0;
            while (_local3 < _arg2.length) {
                if (_local5[_arg2[_local3]]){
                    delete _local5[_arg2[_local3]];
                } else {
                    _local4.push(_arg2[_local3]);
                };
                _local3++;
            };
            for (_local6 in _local5) {
                _local4.push(_local6);
            };
            return (_local4);
        }
        public static function arrayIntersect(_arg1:Array, _arg2:Array):Array{
            var _local3:int;
            var _local4:Array = new Array();
            var _local5:Dictionary = new Dictionary();
            _local3 = 0;
            while (_local3 < _arg1.length) {
                _local5[_arg1[_local3]] = true;
                _local3++;
            };
            _local3 = 0;
            while (_local3 < _arg2.length) {
                if (_local5[_arg2[_local3]]){
                    _local4.push(_arg2[_local3]);
                };
                _local3++;
            };
            return (_local4);
        }
        public static function splitAndTrim(_arg1:String, _arg2:String):Array{
            var _local3:Array = _arg2.split(_arg1);
            var _local4:int;
            var _local5:int = _local3.length;
            while (_local4 < _local5) {
                _local3[_local4] = trim((_local3[_local4] as String));
                _local4++;
            };
            return (_local3);
        }

    }
}//package ZLocalization 
